package com.cimu.NUITools;
import java.util.ArrayList;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.EditText;
import android.widget.Toast;
public class NUIToolsCore {
private final static int MSG_SHOWPROGRASS = 1;
private final static int MSG_SHOWALERTDIALOG = 2;
private final static int MSG_SHOWINPUTDIALOG = 3;
private final static int MSG_SHOWTOAST = 4;
private final static int MSG_SHOWLISTDIELOG = 5;
private static NUIToolsCore m_instance = null;
private Handler m_handler;
private Handler m_handlerC;
private Activity m_activity;
private ProgressDialog m_currentProgress = null;
private int m_alertDialogResult = -1;
private int m_listDialogResult = -1;
private String m_inputDialogResult = "";
private NUIToolsCore() {
}
public synchronized static NUIToolsCore getInstance() {
if (m_instance == null) {
m_instance = new NUIToolsCore();
}
return m_instance;
}
public static Object getInstanceC()
{
return getInstance();
}
public boolean initJava(Activity tActivity)
{
setCurrentActivity(tActivity);
createMainThreadHandler();
return true;
}
private void createMainThreadHandler()
{
m_handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_SHOWPROGRASS:
{
showProgress((String)msg.obj);
}
break;
case MSG_SHOWALERTDIALOG:
{
String[] tarray = (String[])msg.obj;
showAlertDialog(tarray[0],tarray[1],tarray[2]);
}
break;
case MSG_SHOWINPUTDIALOG:
{
String[] tarray = (String[])msg.obj;
showInputDialog(tarray[0],tarray[1],tarray[2],tarray[3],tarray[4]);
}
break;
case MSG_SHOWTOAST:
{
Bundle parm = msg.getData();
boolean tAnim = parm.getBoolean("animed");
double tDelay = parm.getDouble("delay");
String tInfo = parm.getString("info");
showToast(tDelay, tInfo);
}
break;
case MSG_SHOWLISTDIELOG:
{
Bundle parm = msg.getData();
String tTitle = parm.getString("Title");
String tCelBtn = parm.getString("CancelBtn");
String tDestructiveBtn = parm.getString("DestructiveBtn");
String tButtons = parm.getString("Buttons");
showListDialog(tTitle, tCelBtn, tDestructiveBtn, tButtons);
}
break;
}
};
};
Log.d("SinaWBManager","handler threadid :"+Thread.currentThread().getId());
}
public void setCurrentActivity(Activity tActivity)
{
m_activity = tActivity;
}
// public void showAlert(Context context, String title, String text)
// {
//// Builder alertBuilder = new Builder(context);
//// alertBuilder.setTitle(title);
//// alertBuilder.setMessage(text);
//// alertBuilder.create().show();
// Toast.makeText(context, "Auth cancel",
// Toast.LENGTH_LONG).show();
// }
// public void showAlert2(Activity tActivity, String title, String text)
// {
// ProgressDialog dialog = ProgressDialog.show(tActivity, "lalal title", "Loading. Please wait...", true);
// }
public void showProgress(String tText)
{
String[] texts = tText.split("\\|",2);
int tlen = texts.length;
if( tlen == 2 )
{
m_currentProgress = ProgressDialog.show(m_activity, texts[0], texts[1]);
}
else
{
m_currentProgress = ProgressDialog.show(m_activity, "", tText);
}
}
public void showProgressC(String tText)
{
Message msg = new Message();
msg.what = MSG_SHOWPROGRASS;
msg.obj = tText;
m_handler.sendMessage(msg);
}
public void diemessProgress()
{
if( m_currentProgress != null )
{
m_currentProgress.dismiss();
m_currentProgress = null;
}
}
public void showAlertDialog(String tTitle, String tMsg, String tBtns)
{
String[] btns = tBtns.split("\\|",3);
//Log.d("tests btn",tests[0]+" "+tests[1]+" ");
//Log.d("btns btn",btns[0]+" "+btns[1]+" "+btns[2]);
// int tlen = tests.length;
int blen = btns.length;
AlertDialog.Builder builder = new AlertDialog.Builder(m_activity);
builder.setCancelable(false);
// if( tlen == 2 )
// {
builder.setTitle(tTitle);
builder.setMessage(tMsg);
// }
// else
// {
// builder.setMessage(tests[0]);
// }
if( blen>=1 )
{
builder.setPositiveButton(btns[0], new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
m_alertDialogResult = 0;
NUIToolsCompleteCallCFunc();
}
});
}
if( blen>=2 )
{
builder.setNeutralButton(btns[1], new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
m_alertDialogResult = 1;
NUIToolsCompleteCallCFunc();
}
});
}
if( blen==3 )
{
builder.setNegativeButton(btns[2], new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
m_alertDialogResult = 2;
NUIToolsCompleteCallCFunc();
}
});
}
AlertDialog alert = builder.create();
alert.show();
}
public void showAlertDialogC(String tTitle, String tMsg, String tBtns)
{
String[] tarray = {tTitle, tMsg, tBtns};
Message msg = new Message();
msg.what = MSG_SHOWALERTDIALOG;
msg.obj = tarray;
m_handler.sendMessage(msg);
}
public int GetAlertDialogResult()
{
return m_alertDialogResult;
}
public String GetInputDialogResult()
{
return m_inputDialogResult;
}
public void showInputDialog(String tTitle, String tMsg,String tContent, String tPlaceHolder, String tBtns)
{
Log.d("java c", "input dialog");
String[] btns = tBtns.split("\\|",3);
int blen = btns.length;
AlertDialog.Builder builder = new AlertDialog.Builder(m_activity);
builder.setTitle(tTitle);
builder.setMessage(tMsg);
final EditText input = new EditText(m_activity);
builder.setView(input);
if( blen>=1 )
{
builder.setPositiveButton(btns[0], new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
m_alertDialogResult = 0;
m_inputDialogResult = input.getText().toString();
NUIToolsCompleteCallCFunc();
}
});
}
if( blen>=2 )
{
builder.setNeutralButton(btns[1], new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
m_alertDialogResult = 1;
m_inputDialogResult = input.getText().toString();
NUIToolsCompleteCallCFunc();
}
});
}
if( blen==3 )
{
builder.setNegativeButton(btns[2], new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
m_alertDialogResult = 2;
m_inputDialogResult = input.getText().toString();
NUIToolsCompleteCallCFunc();
}
});
}
AlertDialog alert = builder.create();
alert.show();
}
public void showInputDialogC(String tTitle, String tMsg,String tContent, String tPlaceHolder, String tBtns)
{
String[] tarray = {tTitle, tMsg, tContent ,tPlaceHolder, tBtns};
Message msg = new Message();
msg.what = MSG_SHOWINPUTDIALOG;
msg.obj = tarray;
m_handler.sendMessage(msg);
}
public void showToast(double delay, String tInfo)
{
int dur = 1;
if( delay>=1 )
{
dur = Toast.LENGTH_LONG;
}
else
{
dur = Toast.LENGTH_SHORT;
}
Toast.makeText(m_activity, tInfo,
dur).show();
}
public void showToastC(boolean tAnimed, double delay, String tInfo)
{
Bundle parm = new Bundle();
parm.putBoolean("animed", tAnimed);
parm.putDouble("delay", delay);
parm.putString("info", tInfo);
Message msg = new Message();
msg.what = MSG_SHOWTOAST;
msg.setData(parm);
m_handler.sendMessage(msg);
}
public void showListDialog(String tTitle, String tCancelBtn, String tDestructiveBtn, String tButtons)
{
ArrayList<String> tItemList = new ArrayList<String>();
if(tDestructiveBtn != null && tDestructiveBtn.length() > 0)
{
tItemList.add(tDestructiveBtn);
}
String[] btns = tButtons.split("\\|");
for(int i =0; i<btns.length; i++)
{
tItemList.add(btns[i]);
}
if(tCancelBtn != null && tCancelBtn.length() > 0)
{
tItemList.add(tCancelBtn);
}
String[] tShowItems = tItemList.toArray(new String[0]);
Log.d("list dialog", "len :"+tShowItems.length);
Log.d("list dialog", "len 0:"+tShowItems[0]);
AlertDialog.Builder builder = new AlertDialog.Builder(m_activity);
builder .setTitle(tTitle);
builder.setItems(tShowItems, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Log.d("show list dialog","geted which "+which);
m_listDialogResult = which;
NUIToolsCompleteCallCFunc();
}
});
builder.create().show();
Log.d("list dialog", "len:create");
}
public void showListDialogC(String tTitle, String tCancelBtn, String tDestructiveBtn, String tButtons)
{
Bundle parm = new Bundle();
parm.putString("Title", tTitle);
parm.putString("CancelBtn", tCancelBtn);
parm.putString("DestructiveBtn", tDestructiveBtn);
parm.putString("Buttons", tButtons);
Message msg = new Message();
msg.what = MSG_SHOWLISTDIELOG;
msg.setData(parm);
m_handler.sendMessage(msg);
}
public int GetListDialogResult()
{
return m_listDialogResult;
}
public static native void NUIToolsCompleteCallback();
public void NUIToolsCompleteCallCFunc()
{
NUIToolsCompleteCallback();
}
}